package demo.mybatis;

public class CamelCaseConverter {

    public static String camelToSnake(String str) {
        // 正则解释:
        //  - (?<=.) : 正向回顾，确保匹配位置前面至少有一个字符（不是开头）
        //  - (?=[A-Z]) : 正向预查，确保匹配位置后面是一个大写字母
        // 整体意思：在所有“非开头位置”且“后面紧跟大写字母”的地方进行匹配
        String regex = "(?<=.)(?=[A-Z])";

        // 用下划线替换匹配的位置，并将整个字符串转为小写
        return str.replaceAll(regex, "_").toLowerCase();
    }

}